home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / Other Langs / gawk-2.11 / msg.c < prev    next >
Text File  |  1990-09-17  |  2KB  |  93 lines

  1. /*
  2.  * msg.c - routines for error messages
  3.  */
  4.  
  5. /* 
  6.  * Copyright (C) 1986, 1988, 1989 the Free Software Foundation, Inc.
  7.  * 
  8.  * This file is part of GAWK, the GNU implementation of the
  9.  * AWK Progamming Language.
  10.  * 
  11.  * GAWK is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 1, or (at your option)
  14.  * any later version.
  15.  * 
  16.  * GAWK is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  * 
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with GAWK; see the file COPYING.  If not, write to
  23.  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  24.  */
  25.  
  26. #include "awk.h"
  27.  
  28. int sourceline = 0;
  29. char *source = NULL;
  30.  
  31. /* VARARGS2 */
  32. static void
  33. err(char *s, char *msg, va_list *argp)
  34. {
  35.     int line;
  36.     char *file;
  37.  
  38.     (void) fprintf(stderr, "%s: %s ", myname, s);
  39.     vfprintf(stderr, msg, *argp);
  40.     (void) fprintf(stderr, "\n");
  41.     line = (int) FNR_node->var_value->numbr;
  42.     if (line) {
  43.         (void) fprintf(stderr, " input line number %d", line);
  44.         file = FILENAME_node->var_value->stptr;
  45.         if (file && !STREQ(file, "-"))
  46.             (void) fprintf(stderr, ", file `%s'", file);
  47.         (void) fprintf(stderr, "\n");
  48.     }
  49.     if (sourceline) {
  50.         (void) fprintf(stderr, " source line number %d", sourceline);
  51.         if (source)
  52.             (void) fprintf(stderr, ", file `%s'", source);
  53.         (void) fprintf(stderr, "\n");
  54.     }
  55. }
  56.  
  57. /*VARARGS0*/
  58. void
  59. msg(char *fmt,...)
  60. {
  61.     va_list args;
  62.  
  63.     va_start(args, fmt);
  64.     err("", fmt, &args);
  65.     va_end(args);
  66. }
  67.  
  68. /*VARARGS0*/
  69. void
  70. warning(char *fmt,...)
  71. {
  72.     va_list args;
  73.  
  74.     va_start(args, fmt);
  75.     err("warning:", fmt, &args);
  76.     va_end(args);
  77. }
  78.  
  79. /*VARARGS0*/
  80. void
  81. fatal(char *fmt,...)
  82. {
  83.     va_list args;
  84.  
  85.     va_start(args, fmt);
  86.     err("fatal error:", fmt, &args);
  87.     va_end(args);
  88. #ifdef DEBUG
  89.     abort();
  90. #endif
  91.     exit(1);
  92. }
  93.